خرید بک لینک

یکی از مباحثی که در درس شبکه یا محیطهای چند رسانهای مطرح میشود این است که صدای آنالوگ و پیوستهی ما انسانها چطور به صورت دیجیتال و گسسته روی کامپیوتر ذخیره میشود یا از طریق شبکه که آن هم دیجیتال است ارسال میشود؟

در این دروس و در مبحث صدا بحث میکنیم که Analogue to Digital Conversion (تبدیل آنالوگ به دیجیتال) چگونه اتفاق میافتد. این مبحث در جزوه شبکه به خوبی توضیح داده شده، اما من خیلی خلاصه این مبحث را مرور میکنم:

صدای آنالوگ شما در سه گام به دیجیتال (یعنی 0 و 1) تبدیل میشود:

۱- گام Quantization (یا تدریج یا درجهبندی)

اگر این نماد صدای شما باشد:

http://img.aftab.cc/news/94/adc1.jpg

(همانطور که میبینید Value یا Volume یا ولوم صدای شما در زمانهای مختلف کم و زیاد میشود)

در این گام، محور Value (که به آن Volume و Amplitude هم گفته میشود) به قسمتهای مساوی تقسیم میشود. هر چه بیشتر، بهتر! دقت کنید که به تعداد تقسیمات این مرحله در اصطلاح Bit-rate یا Bit-depth یا نرخ بیتی یا عمق بیتی صدا گفته میشود. (مثلاً وقتی میگوییم یک صدا ۱۶ بیتی است یعنی در این مرحله، تعداد سطوح تدریح را ۲ به توان ۱۶ یعنی ۶۵۵۳۶ در نظر گرفته)

۲- گام Sampling (یا نمونهبرداری)

دقت کنید:

http://img.aftab.cc/news/94/adc2.jpg

در این مرحله، محور time به تعدادی قسمت تقسیم میشود. چرا؟ چون ما در حقیقت باید همه نقاط روی آن سیگنال را جایی ذخیره کنیم که بعداً بازتولید کنیم و صدا را پخش کنیم اما چون در درس ریاضی به شما گفتهاند که روی یک پارهخط، بینهایت نقطه وجود دارد، پس نمیتوان همه نقاط را ذخیره کرد. پس «آب دریا را اگر نتوان کشید...پس به قدر تشنگی باید چشید» یعنی حالا که نمیتوان همه نقاط را ذخیره کرد، حداقل چند نقطه را به عنوان «نمونه» ذخیره کنیم، بقیه نقاط را خودمان از طریق به هم وصل کردن نقاط، به دست میآوریم... (مثلاً در سی.دیهای صوتی [Audio CD] از خوانندههای مشهور مثل سراج و ... در هر ثانیه ۴۴۱۰۰ بار نمونه گرفته میشود)

پس در این گام، اگر کل این شکل را «یک ثانیه» از صدای شما تصور کنیم، مثلاً ۱۳ نمونه در ثانیه برمیداریم. یعنی هر ثانیه از محور زمان را به ۱۳ قسمت مساوی تقسیم میکنیم. هر قسمت، سیگنال را در یک نقطه قطع میکند که آن نقطه، نمونه یا Sample است. این نمونه در یک سطح از تدریج قرار میگیرد. مثلاً در شکل بالا نقطه اول در سطح ۵ از تدریج قرار گرفته. این عدد را زیر آن نقطه یادداشت میکنیم.

۳- گام Coding (یا تبدیل به 0 و 1)

در این مرحله، مقدار نقاط نمونه را به عدد باینری (دودویی) تبدیل میکنیم:

http://img.aftab.cc/news/94/adc3.jpg

تمام شد! مگر شما 0 و 1 نمیخواستید؟ خوب، این هم دیجیتال!

حالا این صفر و یک را جایی ذخیره میکنیم که بشود فایل صوتی یا روی کانال شبکه ارسال میکنیم که دوست شما آنطرف خط صدای شما را بشنود...

در مقصد صدا باید دوباره به آنالوگ تبدیل شود تا قابل شناسایی باشد. همین روال را برعکس انجام میدهیم تا سیگنال دوباره تولید شود... (توضیحات بیشتر مربوط به Digital to Analogue Conversion یا DAC در جزوه شبکه...)

به هر حال، بحث اصلی من در این مطلب، در تبدیل آنالوگ به دیجیتال است. وقتی به این بخش میرسیم، بعضی دانشجوهای زرنگتر میگویند: استاد، یعنی اگر الان در یک فایل صوتی حالت سکوت باشد یعنی هیچ صدایی نداشته باشیم هم باز نمونهبرداری به همان صورت انجام میشود و کلی 0 و 1 به خاطر سکوت ذخیره میشود؟ یعنی بیجهت حجم فایل اضافه میشود؟

خوب، اینجاست که بحثی مطرح میشود به نام VBR:

VBR = Variable Bit Rate یعنی چه؟

«نرخ بیتی متغیر» یعنی هنگام تبدیل صدا، هر کجا که سکوت هست (یا به هر دلیلی لازم نیست تعداد بیت بالایی برای هر نمونه لازم نیست) تعداد سطوح تدریج (یعنی بیتهای لازم برای نمونه) کم شود و هر کجا که صدا بیشتر است و لازم است، کیفیت بهتری داشته باشیم، تعداد سطوح تدریج افزایش یابد. یعنی در حقیقت تقسیمبندیهای محور Value در گام در مورد هر نمونه یکسان نیست بلکه نسبت به محتوای صدا متغیر خواهد بود. (در تکنولوژی Variable Sampling Rate که ظاهراً در حد تحقیقات دانشگاهی مانده، همین موضوع در نمونهبرداری اتفاق میافتد)

مثلاً فرض کنید دارید صدای اذان را ضبط یا به فرمت MP3 تبدیل میکنید. میدانید که بین عبارات اذان، معمولاً چند ثانیه سکوت داریم. پس لزومی ندارد در این چند ثانیه مثل حالتی که یک عبارت گفته میشود تدریج انجام شود.

چگونه صدا را فشردهتر کنیم؟

با توجه به آنچه در مورد VBR گفته شد، اگر در نرمافزارهایی مثل Sony Sound Forge از فایلی که دارید یک Save as بگیرید، خواهید دید که بین حالتهای مختلف ذخیرهسازی با فرمتهای مختلف، حالتهایی وجود دارد که با VBR مشخص شده. اگر این موارد را انتخاب کنید، خواهید دید که حجم فایل (به خصوص اگر سکوت در فایل زیاد باشد) به طور قابل ملاحظهای کاهش پیدا میکند:

http://img.aftab.cc/news/94/vbr.png

مثلاً یک فایل صوتی را من با حالت VBR حتی به صورت دو کاناله (Stereo) ذخیره کردم ۲۰ مگابایت شد، در حالی که در حالت یک کاناله (Mono) بدون VBR حدوداً ۲۸ مگابایت شد! (در حالی که باید به خاطر دوکاناله شدن، حجمش خیلی بیشتر میشد)

موفق باشید؛
حمید رضا نیرومند


برچسب: نویسنده: استخدام کار تاريخ: شنبه 29 اسفند 1394 ساعت: 9:20

در حین وبگردی، ممکن است در سایتهای انگلیسی یا حتی سایتهای فارسی به کلماتی بربخورید که معنی آنرا ندانید. هر چند من دیکشنری Lingoes که در این مطلب معرفی کرده بودم را همیشه نصب دارم و از آن استفاده میکنم اما تا بخواهی آن را فعال کنی و کلمه را در آن کپی کنی، طول میکشد و همین باعث میشود انسان گاهی از خیر معنی آن کلمه بگذرد و معنی را تخمین بزند که خوب، کار جالبی نیست و حیف است که انسان معنی دقیق آن کلمه را نداند. به هر حال، یک نوع یادگیری زبان هم به حساب میآید و از قضا چون در متن آن کلمه را یاد میگیرد بهتر به ذهن میماند.

افزونه Wiktionary and Google Translate افزونه خوبی در زمینه ترجمهی در لحظه برای Firefox است:

فقط کافیست با کلیک روی لینک زیر آنرا نصب کنید و تنظیمات را مطابق تصویر دوم تغییر دهید تا از این پس با یک دابلکلیک روی کلمه، آن کلمه سریعاً به دو زبان انگلیسی و فارسی ترجمه شود.

http://img.aftab.cc/news/94/firefox-dictionary-add-on-google-translate.png

تنظیمات را مطابق تصویر زیر تغییر دهید:

http://img.aftab.cc/news/94/firefox-dictionary-add-on.png

اگر فکر میکنید با دابلکلیک روی لغت و ترجمه آن اذیت میشوید، تیک Enable double-click-to-translate را بردارید. در این صورت برای ترجمه لغت کافیست کلیدهای ctrl+shilft را پایین نگه دارید و موس را روی لغت ببرید تا ترجمه شود.

این افزونه فقط یک عیب دارد و آن اینکه تلفظ ندارد! اگر تلفظ و ترجمه بیشتر برای شما مهم است، میتوانید مثل من افزونه Dictionary Tooltip را نیز نصب کنید و تنظیم کنید که با ctrl و دابلکلیک آن فعال شود که تلفظ و ترجمه به زبان انگلیسی هم نمایش دهد. (این افزونه ترجمه به فارسی به طور پیشفرض ندارد و کمی طول میکشد تا ترجمه کند... بنابراین دو تا با هم که باشند عالی میشود. اگر سریع میخواهید، با دابلکلیک و از طریق افزونه اول ترجمه کنید و اگر با تلفظ و مفصل میخواهید، با ctrl+Double-click و از طریق افزونه دوم ترجمه کنید)

موفق باشید؛
حمید رضا نیرومند


برچسب: نویسنده: استخدام کار تاريخ: جمعه 28 اسفند 1394 ساعت: 12:56

یکی از سؤالاتی که دانشجویان ارشد و دکترا میپرسند این است که: برای فلان درس (مثلاً درس دادهکاوی) یا پایاننامه، نیاز به یک دیتاست (DataSet = مجموعه داده) دارم، از کجا میتوانم گیر بیاورم؟

هر چند میشود با جستجو، به نتایجی دست یافت اما بد نیست اینجا برخی از مهمترین سایتهای حاوی دیتاستهای عمومی را جمعآوری کنیم...

۱- فارسی: سایت دادگان:

خوشبختانه شورای عالی انفورماتیک (یا اطلاعرسانی) یک سایت حاوی دیتاستهای فارسی راهاندازی کرده است که از طریق لینک زیر قابل مشاهده است:

Dadegan.ir
http://img.aftab.cc/news/94/persian_dataset.jpg

۲- فارسی: سایت DataPool.ir

اکثر دیتاستهای این سایت، فارسی و رایگان است: DataPool.ir

۳- انگلیسی: سایت کاگل Kaggle.com

سایت کاگل را میشود بهترین مرجع برای دیتاست در دنیا دانست که بسیاری مسابقات (مثل مسابقات مشهور KDD-Cup) و پژوهشها با کمک دادههای این سایت انجام میشود:

Kaggle.com
http://img.aftab.cc/news/94/english_dataset.jpg

دیتاستهایی مثل «گلهای زنبق» (Iris) و نام بچههای آمریکایی و ... نمونههای مشهوری از این دیتاستها هستند.

۴- انگلیسی: واحد دادهکاوی سایت دانشگاه UCI

دهها دیتاست رایگان در زمینههای مختلف در این آدرس قابل دسترسی است:

https://archive.ics.uci.edu/ml/datasets.html

۵- دیتاستهای عمومی سایت گوگل:

http://www.google.com/publicdata/directory

۶- دیتاستهای بانک جهانی:

http://datacatalog.worldbank.org/

۷- دیتاستهای سازمان ملل:

http://data.un.org/Explorer.aspx

۸- دیتاستهای سایت آمازون:

http://aws.amazon.com/public-data-sets/

اینجا هم تعدادی معرفی شده...

اگر شما نیز سایتی حاوی دیتاستهای بهروز و مفید (به ویژه فارسی) میشناسید لطفاً این مطلب را در بخش نظرات کاملتر کنید...

موفق باشید؛
حمید رضا نیرومند

ــــــــــــــــــــــــــــ

آدرس کوتاه این مطلب: http://yourl.ir/dataset


- - , .

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 17 اسفند 1394 ساعت: 13:14

دانشجویانی که با بنده درس مهندسی نرمافزار داشته باشند، یکی از کارهایی که باید در طول دوره انجام دهند، انتخاب یک «محیط عملیاتی» و تحلیل آن محیط است. یعنی طی کردن روالی که ما در اصطلاح به آن روال Fact-Finding (کشف حقایق) میگوییم. این روال، روالی است که هر تولیدکننده نرمافزاری باید در تولید هر نرمافزاری طی کند؛ همانطور که ما خودمان در آفتابگردان برای تولید هر نرمافزاری این روال را طی کردهایم و خواهیم کرد.

با توجه به اینکه دانشجویان ممکن است ابهاماتی در تهیه گزارش نهایی داشته باشند، توضیحاتی در این زمینه میدهم:

اگر شما این درس را دارید، به عنوان پروژهی این درس، باید روال زیر را طی کنید:

۱- بررسی قلمروهای مشابه (Similar Domains)

این یک اصل در علم است که: هیچ ایدهی جدیدی بدون بکگراند نیست و همیشه یک کارهایی در گذشته در زمینهای که شما میخواهید کار کنید، انجام شده است. بررسی نقاط برتری و یا نواقص آنها میتواند یک عامل کلیدی در تولید محصولی باشد که هر کس آنرا دید بگوید: «هر چه خوبان همه دارند تو تنها داری»!
در این مرحله، شما باید بررسی کنید که چه نرمافزارهای مشابهی برای محیط عملیاتی شما نوشته شده است. مثلاً فرض کنید به شما به عنوان پروژه این درس میگوییم: «در نظر بگیر که قرار است یک نرمافزار آموزش تایپ تولید کنیم». شما باید ابتدا در اینترنت جستجو کنید و هر نرمافزاری (تأکید میکنم: هر نرمافزاری) که کوچکترین مشابهتی با این مبحث دارد را بیابید؛ مثلاً با این ساختار از طریق گوگل در سایتی مثل p30download.com جستجو کنید: به ساختار جستجو در یک سایت در گوگل دقت کنید:

http://img.aftab.cc/news/94/fact-finding-techniques-background.png

نکته: اگر یک نرمافزار پیدا شود، میتوانید در سایت AlteativeTo.net نام آنرا وارد کنید تا نمونههای مشابه با آن لیست شود.

سپس باید در نرمافزار Word، گزارشی حاوی این موارد از همه نرمافزارها تهیه کنید:

- نام و آیکون نرمافزار
- مشخصات شرکت سازندهی آن (نام، لوگو، آدرس سایت رسمی و...)
- نحوه تهیه آن نرمافزار (اگر رایگان است لینک دانلود، اگر غیررایگان است، قیمت و نحوهی خرید)
- مشخصات کامل نرمافزار (لیست Featureها؛ یعنی امکانات آن به فارسی و اگر تولید خارج بود، متن انگلیسی سایت سازنده نیز لازم است)
- چند پرینتاسکرین از بخشهای اصلی محیط نرمافزار
- هر نکتهای که به نظر میرسد در تولید نرمافزاری مشابه با آن مفید خواهد بود.

مثلاً گزارشهای سایت p30download میتواند الگوی خوبی باشد: (روی تصویر زیر کلیک کنید تا با ابعاد بزرگ مشاهده کنید)

http://img.aftab.cc/news/94/fact-finding-techniques-similar-works.png

۲- جمع آوری اسناد موجود (Background Reading)

در این مرحله باید به حداقل سه محیط متناسب با موضوع پروژهتان مراجعه کنید (مثلاً اگر قرار است نرمافزار آموزش تایپ تولید کنید، باید به چند مؤسسه که تایپ سریع را آموزش میدهند مراجعه کنید...) و این موارد را در مورد آن سازمان جمع آوری کنید:

- هر نوع فرم ورودی یا خروجی که در محیط عملیاتی وجود دارد. (Company Reports)
مثلاً در مورد این پروژه: فرم ثبتنام در دوره آموزش تایپ، فرمهای حضور و غیاب، گواهینامهی پایان دوره، نمونه امتحانات و خلاصه هر برگه و سندی که در محیط میبینید برای ما مهم است. حتی اگر یک برگه را در سطل آشغال انداختهاند میتوانید یک نمونه از آن بردارید. تمام اطلاعیههایی که به در و دیوار و تابلو اعلانات و ... زدهاند برای ما مهم است. هر نوع کاغذی حاوی دادههایی است که بعداً در سیستم باید مورد توجه باشد.

- چارت سازمانی آن سازمان (Organization Charts)(شاید در پروژه تایپ لازم نباشد اما در پروژههایی مثل سیستم مدیریت کتابخانه یا آموزشگاه و حقوق و دستمزد و امثالهم لازم است)

- سیاستها و اساسنامه سازمان (Policy Manuals)

- مستندسازی سیستم موجود (Documentation of existing system)
این مورد خیلی مهم است! اگر محیط عملیاتی شما فعلاً دارد از یک سیستم نرمافزاری استفاده میکند، باید دقیقاً آنرا مستندسازی کنید. یعنی مشخصات آن نرمافزار را بپرسید و از آن یک گزارش تهیه کنید، به خصوص باید از آنها بپرسید که این نرمافزار فعلی چه کمبودها و چه نقاط قوتی دارد؟ چند پرینت اسکرین از محیط آن تهیه کنید، اگر آن نرمافزار کاتالوگی دارد، یک نسخه به دست آورید و خلاصه هر چیزی که فکر میکنید لازم است درباره سیستم موجود بدانیم.

مثلاً این دانشجو از تمام بخشهای سیستم موجود که در محیط عملیاتی بوده پرینتاسکرین گرفته و هر نوع سندی (فیشها، فرمها و حتی اطلاعیهای که به تابلو اعلانات زده میشده) را نیز جمعآوری کرده:

http://img.aftab.cc/news/94/fact-finding-techniques-documents.jpg

توجه: علاوه بر اینکه اصل اسناد در انتهای دوره تحویل داده میشود، باید تمام آنها را اسکن کرده (یا با گوشی با کیفیت عکس بگیرید) و فایلها را در یک پوشه به نام Documents تحویل دهید.

۳- مصاحبه (Interviewing)

مصاحبه پرکاربردترین روش برای کشف حقایق محیط عملیاتی است. باید به حداقل سه محیط مرتبط با موضوع پروژهتان مراجعه کنید و با یک یا چند نفر در آن محیط مصاحبه کنید.
بهتر است سؤالاتی را که میخواهید در جلسه مصاحبه بپرسید به ما نشان دهید تا اگر ایرادی داشت برطرف شود.

مصاحبه باید ضبط شود و فایل صوتی آن در انتهای دوره تحویل داده شود. (البته شخص مصاحبهشونده به هیچ وجه نباید بفهمد که صدایش در حال ضبط شدن است. بنابراین گوشیتان را روی رکورد تنظیم کنید و بدون توجه به آن وارد محیط شوید و مصاحبه را انجام دهید. دلیل این کار این است که شخص بدون اضطراب، صحبت کند)

مصاحبه حاوی نکاتی است که در جزوه مهندسی نرمافزار آمده است و باید حتماً رعایت شود؛ از جمله:
- در برخورد با افراد مصاحبهشونده مؤدب باشيد.
- هرگز سؤالات خصوصی از مصاحبهشونده نپرسید. (سؤالاتی مثل: چقدر حقوق میگیرید؟ از شغلتان/رئیستان راضی هستید؟ و...)
- به دقت گوش کنيد و صحبت شخص را قطع نکنید.
- کنترل خود را حفظ کنيد.
- کنجکاو باشيد و اگر چیزی را متوجه نشدید، بپرسید تا به جواب برسید.
- کنترل مصاحبه را حفظ کنيد.
- صبور باشيد.
- جو را طوری تنظيم کنيد که مصاحبه کننده احساس راحتي کند. (مثلاً در مورد این پروژهی دانشگاهی ممکن است برای اینکه با شما همکاری کند حتی لازم باشد بگویید: این فقط یک پروژه دانشگاهی ساده است که این استاد ما گیر داده که حتماً یک مصاحبه انجام شود، لطفاً همکاری کنید که شر او از شما کم شود!!!...)
- حتماً یک یادداشتبرداری در حین صحبت شخص داشته باشید که نگوید حرفهای من چطور در ذهن این آقا یا خانم میماند و متوجه شود که صدا را ضبط میکنید!

نمونهای از سؤالاتی که باید در مصاحبه بپرسید:

دقت کنید که سؤالاتی که میپرسید باید بخشی از ابهامات تولید نرمافزار را رفع کند. پس سؤالی که نتوان از پاسخ آن هیچ نوع استفاده در تولید نرمافزار کرد، نباید پرسیده شود. (سؤالاتی مثل اینها معمولاً مفید نیستند: رنگ مورد علاقه شما چیست؟ تحصیلات شما؟ کامپیوتر دارید؟ به کار با کامپیوتر علاقه دارید؟ و...)

مثلاً برخی سؤالات که در مورد نرمافزار آموزش تایپ میتوانید از مدیر یک آموزشگاه برگزارکننده دوره تایپ سریع بپرسید:

- برای آموزش تایپ از نرمافزار خاصی استفاده میکنید؟ اگر بله، میشه چند تا پرینت اسکرین ازش بگیرم؟
- فکر میکنید نرمافزاری که استفاده میکنید چه نقایصی داره که ما در در نرمافزارمون اونها رو رفع کنیم؟ چه نکات مثبتی داره که حتماً توی نرمافزارمون بهش توجه کنیم؟
- کتاب خاصی در این زمینه وجود داره؟ میشه ببینم؟ (از جلد آن عکس بگیرید)
- روش علمی خاص و استانداردی برای آموزش تایپ هست؟ میشه توضیح بدید چه روشهایی؟
- شما پیشنهادتون برای یادگیری تایپ چی هست؟ مثلاً چند بار در هفته یا روز؟ چقدر تایپ؟ لطفاً توضیح بدید.
- معمولاً چه افرادی کلاسها رو ثبت نام میکنن؟
- کلاسها چطور برگزار میشه؟ استاد چطور روی افراد نظارت داره؟
- آموزش تایپ فارسی با انگلیسی تفاوت داره؟ چه تفاوتهایی؟
- هزینه دورهها چقدر و چند ساعته و چند روز در هفته هست؟
- آزمون دوره چطور برگزار میشه؟ یعنی معیار قبولی چی هست؟ آزمون کتبی دارید یا عملی؟ لطفاً توضیح بدید.
- نکته خاصی هست که به تولید این نوع نرمافزارها بتونه به ما کمک کنه و شما نگفته باشید؟

نهایتاً باید پرسشها و پاسخهای مصاحبهشوندگان تایپ و فایل آن تحویل داده شود.

۴- مشاهده (Observation)

میتوان گفت مطمئنترین روش جمعآوری حقایق، مشاهده است چون تحلیلگر خودش روالها را مشاهده و حتی طی کرده و نتیجه را یادداشت کرده نه اینکه کسی برایش تعریف کند.

در این مرحله باید با حداقل دو محیط عملیاتی مرتبط با پروژهتان هماهنگ کنید و یک روز به محیط آنها بروید و آنچه که در محیط در مورد نرمافزار شما اتفاق میافتد را مشاهده کنید و گزارش آنرا بنویسید.

به طور مثال در مورد همین نرمافزار آموزش تایپ: یک روز که کلاس آن برگزار میشود با اجازه آموزشگاه کمی زودتر در مؤسسه و سپس در کلاس حاضر میشوید و تا انتهای کلاس فقط مشاهده میکنید که چه اتفاقاتی میافتد. مثلاً گزارش شما چیزی شبیه به این میشود: دانشجویان که تعداد آنها ۱۰ نفر بود در ساعت فلان در کلاس حاضر شدند. مدرس پس از حضور، به صورت نرمافزاری حضور و غیاب انجام داد، سپس با کمک نرمافزاری به نام ایکس ابتدا مروری بر تایپ ده انگشتی شد سپس فلان تکلیف مشخص شد و کاربران ده دقیقه فرصت داشتند که انجام دهند. سپس فرمی که در تصویر زیر مشخص است به دانشجویان داده شد تا مشخصات خود را وارد کنند و... و به همین صورت هر اتفاقی که مرتبط با موضوع پروژه شما میافتد را یادداشت میکنید.

۵- پرسشنامه (Questioaires)

پرسشنامه در مورد محیطهای عملیاتی که افراد زیادی قرار است با سیستم درگیر باشند مناسب است. روال تهیه پرسشنامه خوب، در جزوه مهندسی نرمافزار آمده است. پس از مرور آنها یک پرسشنامه که ترکیبی از انواع سؤالات (چند گزینهای، بله/خیر، تشریحی، امتیازی و...) باشد تهیه کنید. سؤالات پرسشنامه را حتماً قبل از تکثیر به تأیید ما برسانید.

آنرا حداقل به ۵ محیط مرتبط با پروژهتان بدهید تا تکمیل کنند و با مهر و امضا تحویل ما بدهید. ضمناً تصویر آنها نیز به صورت دیجیتالی باید در پوشهی پروژه شما باشد.
نمونهای از یک پرسشنامه تکمیل شده:

http://img.aftab.cc/news/94/fact-finding-techniques-questionaries.jpg

۶- تهیه دیاگرامها:

نهایتاً با توجه به تحلیلی که انجام دادهاید، در فاز «طراحی» با توجه به جزوه، دیاگرامهای زیر را ترسیم کرده و تحویل میدهید:

- DFD (نهایتاً تا ۳ سطح)
- Use-Case Diagram (به انضمام حداقل ۵ سناریو)
- Class Diagram
- Object Diagram
- Package Diagram
- ERD
- State Diagram
- Activity Diagram
- Sequence Diagram
- Component Diagram
- Deployment Diagram

نمونه گزارش:

یک نمونه گزارش که میتواند به عنوان قالب کلی در نظر گرفته شود با کلیک روی این لینک قابل دانلود است. (البته دقت کنید که من صحت محتوا را تأیید نمیکنم و فقط حکم یک قالب را دارد. مثلاً DFDها و برخی دیگر از دیاگرامها در این گزارش کلاً اشتباه هستند و نمره کم شده)

نکته مهم:

گزارش باید بر اساس این ویدئو و با رعایت اصول تایپ و اصول صفحهنگاری در Word تهیه شود.

موفق باشید؛
حمید رضا نیرومند


- - , .

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 10 اسفند 1394 ساعت: 14:42

حدود ده سال پیش (یعنی زمانی که اسمی از پرینتر سه بعدی هم در میان نبود) یک بنده خدایی میگفت در روزنامه خواندهام که دنیا دارد به سمتی میرود که آن جریان تخت ملکه سبا محقق شود.

یادتان که هست؟ ملکه سبا نزد حضرت سلیمان آمد... حضرت سلیمان گفت: (آیات ۳۸ تا ۴۲ نمل)

قَالَ يَا أَيُّهَا المَلَأُ أَيُّكُمْ يَأْتِينِي بِعَرْشِهَا قَبْلَ أَن يَأْتُونِي مُسْلِمِينَ ﴿۳۸﴾
[سپس] گفت اى سران [كشور] كدام يك از شما تخت او را پيش از آنكه مطيعانه نزد من آيند براى من مى آورد (۳۸)

قَالَ عِفْريتٌ مِّنَ الْجِنِّ أَنَا آتِيكَ بِهِ قَبْلَ أَن تَقُومَ مِن مَّقَامِكَ وَإِنِّي عَلَيْهِ لَقَوِيٌّ أَمِينٌ ﴿۳۹﴾
عفريتى از جن گفت من آن را پيش از آنكه از جای خود برخيزى براى تو مى آورم و بر اين [كار]، سخت توانا و مورد اعتمادم (۳۹)

قَالَ الَّذِي عِندَهُ عِلْمٌ مِّنَ الْكِتَابِ أَنَا آتِيكَ بِهِ قَبْلَ أَن يَرْتَدَّ إِلَيْكَ طَرْفُكَ فَلَمَّا رَآهُ مُسْتَقِرًّا عِندَهُ قَالَ هَذَا مِن فَضْلِ رَبِّي لِيَبْلُوَنِي أَأَشْكُرُ أَمْ أَكْفُرُ وَمَن شَكَرَ فَإِنَّمَا يَشْكُرُ لِنَفْسِهِ وَمَن كَفَرَ فَإِنَّ رَبِّي غَنِيٌّ كَرِيمٌ ﴿۴۰﴾
كسى كه نزد او دانشى از كتاب [الهى] بود گفت من آن را پيش از آنكه چشم خود را بر هم زنى برايت مى آورم پس چون [سليمان] آن [تخت] را نزد خود مستقر ديد گفت اين از فضل پروردگار من است تا مرا بيازمايد كه آيا سپاسگزارم يا ناسپاسى مى كنم و هر كس سپاس گزارد تنها به سود خويش سپاس مى گزارد و هر كس ناسپاسى كند بى گمان پروردگارم بى نياز و كريم است (۴۰)

قَالَ نَكِّرُوا لَهَا عَرْشَهَا نَنظُرْ أَتَهْتَدِي أَمْ تَكُونُ مِنَ الَّذِينَ لَا يَهْتَدُونَ ﴿۴۱﴾
گفت تخت [ملكه] را برايش ناشناس گردانيد تا ببينيم آيا پى مى برد يا از كسانى است كه پى نمى برند (۴۱)

فَلَمَّا جَاءتْ قِيلَ أَهَكَذَا عَرْشُكِ قَالَتْ كَأَنَّهُ هُوَ وَأُوتِينَا الْعِلْمَ مِن قَبْلِهَا وَكُنَّا مُسْلِمِينَ ﴿۴۲﴾
پس وقتى [ملكه] آمد [بدو] گفته شد آيا تخت تو همين گونه است گفت گويا اين همان است و پيش از اين ما آگاه شده و از در اطاعت درآمده بوديم (۴۲)

او میگفت به این نتیجه رسیدهاند که این جریان اگر قرار باشد یک جریان علمی در نظر گرفته شود، به این صورت اتفاق افتاده است: آن شخص که «عِلْمٌ مِّنَ الْكِتَابِ» داشته، ابتدا یک اسکن از تخت ملکه سبا در مبدأ گرفته، سپس آنرا در آنجا نابود کرده و نمونهی آنرا در مقصد ساخته است.

باور این موضوع این روزها برای ما چندان مشکل نیست! ما پرینترهای سهبعدی را دیدهایم که قادرند تمام اعضای بدن انسان را در زمان کوتاهی بسازند!

http://img.aftab.cc/news/94/3d_printer.jpg

حالا تکنولوژی Shape-Shifting (تغییر شکل) هم وارد میشود! این سمینار جالب که معمولاً هر وقت یک تکنولوژی در TED به نمایش در میآید، چهار پنج سال بعد در بازار هم دیده میشود را تماشا کنید:

http://img.aftab.cc/news/94/shape-shifting-tech.jpg

ظاهراً باید همین روزها منتظر اشیایی بود که در یک چشم به هم زدن به شکل جسمی در آن طرف دنیا در بیایند!

من در این چند سال که پرینتر سهبعدی را میدیدم اینطور فکر میکردم که دنیا به زودی به این شکل در خواهد آمد: مثلاً فرض کنید شما رفتهاید یک کشور دیگر و متوجه میشوید که مثلاً سوئیچ خود را با خود نبردهاید. زنگ میزنید به خانه و یکی از اعضای خانواده، آنرا در دستگاهی مثلاً به نام Object Transmitter (ارسال کننده شیئ) میگذارد، آن دستگاه یک اسکن سهبعدی از شیئ میگیرد و سپس آنرا نابود میکند و در دستگاه مقصد، با استفاده از پرینتر سهبعدی عیناً آنرا بازتولید میکند... فقط موضوع این است که ضایعات در مبدأ چه میشود و مواد مورد نیاز در مقصد چگونه تأمین شود؟ خوب، خیلی ساده است، میتوان شرکتهایی را در نظر گرفت که ضایعات را از شما بخرند و در عوض در مقصد با همین هزینه، مواد اولیه بخرید. یعنی چیزی از دست نمیدهید... ضمن اینکه به نظر میرسد اگر بخواهیم به این سمت پیش برویم باید همه اشیاء به مرور از یک ماده خاص تولید شوند... شاید شیشه! که جالب است در ادامه آیات میخوانیم:

قِيلَ لَهَا ادْخُلِي الصَّرْحَ فَلَمَّا رَأَتْهُ حَسِبَتْهُ لُجَّةً وَكَشَفَتْ عَن سَاقَيْهَا قَالَ إِنَّهُ صَرْحٌ مُّمَرَّدٌ مِّن قَوَارِيرَ قَالَتْ رَبِّ إِنِّي ظَلَمْتُ نَفْسِي وَأَسْلَمْتُ مَعَ سُلَيْمَانَ لِلَّهِ رَبِّ الْعَالَمِينَ ﴿۴۴﴾

به او گفته شد وارد ساحت كاخ [پادشاهى] شو و چون آن را ديد بركه اى پنداشت و ساقهايش را نمايان كرد (پاچههایش را بالا زد). [سليمان] گفت اين كاخى مفروش از شیشه است [ملكه] گفت پروردگارا من به خود ستم كردم و [اينك] با سليمان در برابر خدا پروردگار جهانيان تسليم شدم (۴۴)

به نظر میرسد وقتی کاخی از شیشه ساخته شده بوده، پس تکنولوژی پیشرفتهای در آن زمان موجود بوده است و ظاهراً شیشه ماده اولیه تکنولوژیهای پیشرفتهشان بوده...

در آیات بالا چند مورد هست که برای کسانی که قصد تحقیق در این زمینه (که آیا واقعاً آن موضوع یک موضوع علمی بوده و با این فرضیات تطابق دارد یا خیر) را دارند مورد توجه است:
- اولاً گفته شده «نَكِّرُوا» (تختش را برایش ناشناس کنید) این ناشناس کردن جای تأمل دارد.
- ثانیاً از ملکه سبا پرسیده میشود «آیا تخت تو اینچنین است؟» او هم جواب میدهد: «انگار که خودش است». نمیپرسد «آیا این تختِ تو است؟» و او نمیگوید «دقیقاً خودش است».

به هر حال، با تکنولوژی Shape-Shifting حتی نابود کردن شیئ در مبدأ و تولید مجدد در مقصد هم نیاز نیست! فقط از جسم در مبدأ اسکن بگیرید و در مقصد، یک شیئ را موقتاً (یا به طور دائمی) به شکل آن جسم در مبدأ در آورید...

موفق باشید؛
حمید رضا نیرومند


- - , .

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 10 اسفند 1394 ساعت: 14:42

یک سری موضوع اینجا مطرح میکنم که برای دانشجویان کارشناسی، ارشد و دکترای نرمافزار به عنوان یک موضوع برای ارائه در دروسی مانند «مهندسی نرمافزار»، «مهندسی نرمافزار پیشرفته»، «آزمون نرمافزار» و «معماری نرمافزار» و دروس مشابه مفید خواهد بود.

موضوع برای تحقیق و ارائه در درس مهندسی نرمافزار و معماری نرمافزار:

۱- نرمافزار اتکاپذیر چیست؟

۲- مبحث مدیریت پروژههای نرمافزاری

میتوان یک پروژهی نمونه را با MS Project یا دیگر ابزارهای مدیریت پروژه پیادهسازی کرد.

۳- مبحث پشتیبانی نرمافزارها

۴- ارائه یکی از مدلها و متودولوژیهای Agile / Lean / DevOps / Scrum / XP و بقیه که در این صفحه قابل دسترسی است.

۵- توضیح معماری MVC

۶- روشهای توصیف نرمافزار (formal, semi-formal and informal methods of software development)

۷- مبحث R&D در تولید نرمافزار

موضوع برای تحقیق و ارائه در درس آزمون نرمافزار:

۱- آزمون نرمافزار از طریق جنبهگرایی (Software Testing via Aspect-Oriented Programming)

میتوان بعد از اشاره به مفاهیم مختلف جنبهگرایی، با انتخاب یکی از موارد زیر، یک نمونه از آزمون یک برنامه با استفاده از مفهوم جنبهگرایی را پیادهسازی کرد:

نمونههای محیطهای با پشتیبانی از جنبهگرایی:

AspectC++
AspectC
Aspect#, AspectDNG, LOOM.NET, AspectC#, EOS
Aspect-Oriented Perl, Aspect.pm
Aspects, Pythius (Python)
AspectR (Ruby)
AspectS, Apostle, MetaclassTalk (Squeak/Smalltalk)
AspectXML
AOPHP, AspectPHP
Object Teams
UMLAUT

۲- آزمون برنامههای جنبهگرا (Testing Aspect-Oriented Programs)

این مبحث از مباحث روز و در حال کار به حساب میآید...

۲- ابزارهای تولید دادهآزمون (Test data generation Tools)

میتوانید این ابزارها را توضیح دهید:

Jtest
C++ test
AgitarOne
Codepro Analytix
Autotest
Randoop
Pex

ابزارهای دیگری نیز هستند که در تصویر زیر یک مقایسه بین آنها انجام شده:

http://img.aftab.cc/news/94/test-data-generation-tools.png

۳- تولید داده آزمون با استفاده از شبکههای عصبی / الگوریتمهای ژنتیک

این نوع موضوعات برای دانشجویانی که به هوش مصنوعی علاقه دارند، موضوع جالبی است.

۴- طراحی اوراکل با استفاده از شبکههای عصبی

۵- تست واحد در C# یا جاوا یا PHP (بحث Unit Test در زبانهای مخلتف)

در ویژوال استودیو ابزاری برای تست واحد وجود دارد. در PHP نیز ابزار PHPUnit (سایت رسمی: https://phpunit.de ) برای این کار تعبیه شده که کار آزمون نرمافزارهای بزرگ را تا حد زیادی ساده میکند.

۶- آزمون نرمافزار به کمک آزمون جهشی

Mutation Test نوعی آزمون است که ما خود خطاهایی در نرمافزار ایجاد میکنیم و سپس دادهآزمونهایی به نسخهی خطادار برنامه میدهیم و بررسی میکنیم که آیا نسخهی خطادار پاسخ اشتباه مورد نظر را تولید خواهند کرد؟

۷- بررسی دیتاستهای آماری ناسا در مورد نرمافزارهای تولید شده توسط ناسا

۸- تولید اتوماتیک مسیرهای مستقل در آزمون جعبه سفید

۹- وارسی در حین اجرا با کمک برنامهنویسی نظارتگرا (Runtime Verification with MOP)

میتوان ضمن اشاره به مفاهیم MOP و آزمون حین اجرا، با کمک JavaMOP یک پیادهسازی داشت. (سمینار بنده در این زمینه)

موضوعات بیشتر به مرور به این مطلب اضافه خواهد شد.

موفق باشید؛
حمید رضا نیرومند


- - , .

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 3 اسفند 1394 ساعت: 21:04

زمانی که پیشدانشگاهی بودیم و میخواستیم برای دانشگاه انتخاب رشته کنیم، یکی از دوستان از من پرسید چه رشتهای میخواهی بروی؟ گفتم: کامپیوتر. گفت: پسر! حماقت نکن! این روزها همه کامپیوتر دارند و بلدند. آینده شغلی ندارد!

من آن زمان کمی احساس خطر کردم! او راست میگفت. خیلیها با اینکه در رشته کامپیوتر درس نخوانده بودند، جیک و پوک کامپیوتر را بلد بودند.

هر چند بعداً فهمیدیم آن چیزی که ما از کامپیوتر تصور میکردیم، با آن چیزی که در دانشگاه در رشته کامپیوتر تدریس میشود، از زمین تا آسمان فرق دارد، اما به هر حال، در حین تحصیل در این رشته، به دنبال شغلی بودم که کسی نتواند بدون گذراندن این رشته در دانشگاه (و حتی اگر هم این رشته را گذراند) به راحتی به آن دست پیدا کند. مثلاً اگر از این رشته، شغل خدمات کامپیوتری را انتخاب میکردم، یا حتی شغل طراحی وب یا گرافیک و امثالهم را، خوب، خیلیها بدون گذراندن این رشته وارد این شغل میشدند و بازار کار ما کساد میشد. بنابراین شغل برنامهنویسی را انتخاب کردم چون میدانستم چیزی نیست که هر کسی بتواند از پس آن بربیاید...

تا امروز، خیلی احساس خطر نکرده بودم، اما یک خبر که امروز خواندم، مرا به فکر فرو برد:

اوایل مهرماه امسال، هیئت وزیران کشور استرالیا قانونی را به تصویب رساند که تا چندین هفته، نقل محافل عملی و دانشگاهی بود و حتی واکنشهای تند برخی گروهها را به دنبال داشت. در این قانون، به آموزشوپرورش این کشور دستور داده شد از فهرست درسهای آموزشی مقطع ابتدایی، دو درس تاریخ و جغرافیا حذف و بهجایش درسهای برنامهنویسی گنجانده شود. دولت استرالیا برای تحقق این قانون نیز بودجه 12 میلیارد دلاری به تصویب رساند. در آن مقطع همه از خود میپرسیدند: «آیا واقعاً برای یک کودک دوره ابتدایی برنامهنویسی مهمتر از تاریخ و جغرافیا است؟»

هنوز دو سه هفتهای از انتشار این خبر نگذشته بود که یک تحقیق دیگر در کشور فرانسه حسابی سروصدا بهپا کرد. نتایج این تحقیق نشان میداد در میان کودکان، کلاسهای آموزش زبان برنامهنویسی پایتون بسیار محبوبتر از کلاسهای آموزش دستور زبان فرانسه است. جالب است این استقبال نه تنها در کودکان، بلکه در والدین هم وجود دارد و پدر و مادر کودکانی که باید وارد کلاس اول دبستان شوند؛ ترجیح میدهند کودکشان را در یک مدرسه که آموزش برنامهنویسی پررنگتری دارند؛ ثبتنام کنند.

این برای ما برنامهنویسها یک زنگ خطر است! به زودی جوامع، مملو از برنامهنویس خواهد شد! (البته الان هم تعداد برنامهنویسها کم نیست!)

چاره چیست؟

خوب، کسی که زرنگ است، باید آیندهنگر باشد. خیلیها از این آیندهنگر نبودن ضرر کردهاند. مثلاً یک زمان که سرعت اینترنت پایین بود و هر کسی اینترنت پرسرعت نداشت، فروشگاه محصولات دیجیتال (مثل فروش نرمافزار یا فیلمهای آموزشی و مستند و امثالهم) یکی از پرسودترین شغلها بود. خیلیها از این نوع فروشگاههای آنلاین راه انداختند (همانطور که ما خودمان از اولینها بودیم و آن زمان با اینترنت Dial-up مثلاً یک روز سیستم خانه روشن میماند و خط تلفن اشغال میبود تا یک فیلم مستند دانلود شود که در فروشگاه قرار دهیم و طبیعتاً هر کسی این کار را نمیکرد و برایش مقرونبهصرفهتر بود که از فروشگاه بخرد) اما به مرور و همینطور که سرعت اینترنت افزایش و قیمت آن کاهش یافت، فروش این نوع فروشگاهها به صفر نزدیک شد... اگر کسی که آن شغل را انتخاب کرده بود، آیندهنگر نبوده باشد، الان احتمالاً محتاج نان شب است! بحث تبلیغات در سایتها همینطور. اگر شما سایتی دارید و الان تبلیغات خوبی به شما سفارش داده میشود، باید حواستان باشد که به زودی صدها سایت بهتر از شما متولد خواهند شد که شرکتهای بزرگ ترجیح میدهند به آنها تبلیغ بدهند. در بحث تدریس هم همینطور! شما الان خودتان را برای تدریس چه مبحثی آماده میکنید؟ اگر برای مباحث تئوری آماده میشوید که آنقدر دختر بودهاند که قدرت حفظ کردنشان بهتر از شما بوده و جزوات استادشان را حفظ کردهاند و میروند مثل بلبل برای دانشجوهایشان تعریف میکنند... اما اگر زرنگ باشی میدانی که تدریس دارد به سمت کاربردی شدن پیش میرود. یعنی در این بازار استادها، به مرور، استادی برتر خواهد بود که چیزی که تدریس میکند را سالها کار و تجربه کرده باشد و خیلی از شغلهای دیگر به همین صورت است.

اولاً یک نکته جالب و جانبی این است که اگر کسی دنبال شغلهایی میگردد که با گذر زمان، ثبات و پیشرفت مالی بیشتری داشته باشد باید برود سراغ شغلهایی که ما پرستیژ آنها را پایین میدانیم!
یعنی شغلهایی مثل مکانیکی و تراشکاری و امثالهم (احتمالاً) همینطور که پیش میرویم، درآمدشان افزایش مییابد... (چون همه دارند برای خودشان مهندس و دکتر میشوند و پرستیژشان بالا میرود و وسایل صنعتی هم که روزافزون میشوند...)

اما اگر از آن بحث بگذریم، سؤال اصلی این است که:

برنامهنویسان باید چه برنامهریزیای برای آینده داشته باشند؟

پاسخش در ایمیلی است که چند وقت پیش از طریق خبرنامه سایت Coursera ارسال شده بود.

در این ایمیل ده مهارت برتر سال ۲۰۱۵ در کشورهای پیشرفته (که میشود گفت معادل ۵ تا ۱۰ سال آیندهی ما است و احتمالاً برای ده پانزده سال آینده عمر دارد) لیست شده بود.

Top 10 most valuable career skills of 2015

ده مهارت کاری ارزشمندتر در سال ۲۰۱۵

http://img.aftab.cc/news/94/top-10-most-valuable-career-skills-of-2015.png

همانطور که میبینید، مهارتها خیلی تخصصیتر شده است. دیگر خبری از آموزش زبان C و فتوشاپ و امثالهم نیست! چون همه بلدند! مثلاً زبان برنامهنویسی R (که پایهی بسیاری از نرمافزارهای دادهکاوی است) و یا بحث Machine Leaing و دادهکاوی و Data Visualization و... دارد مهمتر میشود.

در کل میخواهم این را بگویم: اگر برنامهنویس هستید و میخواهید زنده بمانید، دیگر حتی برنامهنویس حرفهای بودن هم بازارش کساد شده است. باید خیلی تحصصیتر کار کرده باشید. مثلاً اگر تا دیروز برنامهنویس سیستمهای سیستمهای حقوق و دستمزد بودید، حالا باید برنامهنویسی برای Big Data را یاد بگیرید. اگر تا دیروز کدنویسی حرفهای برای پایگاه داده بلد بودید، این روزها دیگر همه بلدند! شما اگر میخواهید حرفی برای گفتن داشته باشید، باید کلاس کاریتان را در حد Data Cube بالا ببرید.

روش؟

اگر سؤالتان این است که چطور به این حد از دانش برسیم، میشود گفت بهترین راهش همان ادامه تحصیل در دانشگاههای معتبر در کنار کار عملی است. (باید زندگیتان را طوری تنظیم کنید که هم از کار عملی غافل نشوید و هم از تحصیلات عالی)
مطالعه کتابهای جدید مرجع دکترا هم میتواند دید کلیای نسبت به آینده به شما بدهد.

خلاصه:

همانطور که استیو جابز معتقد بود که «همه مردم دنیا باید برنامهنویسی یاد بگیرند» و حتی اوباما نیز برنامهنویسی یاد گرفت، به زودی برنامهنویسی جزء علوم ابتدایی بشر خواهد بود. به زودی نوجوانان در سنین ۱۰ تا ۱۵ سال، برنامهنویسان حرفهای جامعه خواهند بود. اما چیزی که این برنامهنویسان حرفهای خودشان به آن نیاز خواهند داشت و شما میتوانید مرجع آنها باشید، مواجه شدن با موضوعات بسیار تخصصیتر (مانند تحلیل دادههای عظیم، تحلیل دادههای توزیعشده، برنامهنویسی سیستمهای Safety Critical و امثال آن) خواهد بود.

و همچنان، نه به این معنی که فقط در این زمینهها دانش تئوری کسب کرده باشید، بلکه دانش فنیتان در حدی باشد که بتوانید آن نوجوانان و جوانان را عملاً راهنمایی کنید. (یعنی Skilled باشید و نه Educated)

یک نکته جانبی:

این مطلب را با بحث «روزی» مخلوط نکنید. شما اگر در بیابانی تنها هم باشید، روزیتان را خدا میرساند. نگران روزی نباشید. ما به دید «مؤثر بودن در جامعه» (به ویژه مؤثر بودن شما به عنوان یک عضو جامعه اسلامی در جهان) به موضوع نگاه میکنیم. من در این مطلب در مورد آن علمی که طبق روایت مشهور، سلطان است، صحبت کردم... (العلم سلطان من وجده صال و من لم یجده صیل علیه: علم، قدرت است هر كس آن را بيابد غلبه خواهد كرد و هر كس به آن دست نيابد بر او غلبه خواهند كرد)

موفق باشید؛
حمید رضا نیرومند

ــــــــــــــــــــــــــــــــــ

پینوشت: این مهارتها هم در یکی دیگر از خبرنامههای همان سایت بود که برای پنج تا ده سال آینده، مهارتهای خوبی به حساب میآیند و بد نیست نگاهی به آنها داشته باشید:

http://img.aftab.cc/news/94/valuable-skills.png


- - , .

برچسب: نویسنده: استخدام کار تاريخ: دوشنبه 3 اسفند 1394 ساعت: 21:04

صفحه بندی